#ifndef BANK_CUSTOMER_HH
#define BANK_CUSTOMER_HH

#include "User.hh"
#include "Account.hh"
#include <vector>
#include <memory>
#include <string>

class Customer : public User {
private:
    std::vector<std::shared_ptr<Account>> accounts;
    std::string accountPassword;

public:
    Customer(std::string name);
    Customer(std::string name, std::string password);

    // Account management
    void addAccount(std::shared_ptr<Account> account);
    std::shared_ptr<Account> getAccountById(const std::string& accountId) const;
    const std::vector<std::shared_ptr<Account>>& getAccounts() const;

    // Find specific account types
    std::shared_ptr<Account> getSavingsAccount() const;
    std::shared_ptr<Account> getCheckingAccount() const;

    // Display customer information and accounts
    void displayInfo() const;

    // 验证账户密码
    bool verifyPassword(const std::string& password) const;

    // 修改密码
    bool changePassword(const std::string& oldPassword, const std::string& newPassword);

    // 账户删除确认
    bool confirmDeleteAccount(const std::string& accountId, const std::string& password) const;
};

#endif // BANK_CUSTOMER_HH 